//? 代理模式是一种为其他对象提供一种代理以控制对该对象的访问的设计模式。在代理模式中，代理对象充当着客户端和真实对象之间的中介，它可以对客户端的请求进行过滤、验证、记录、缓存等操作，最后再交给真实对象处理。


class realTarget {
    constructor() {
        console.log('真实的目标被触发')
    }
    request() {
        console.log('真实的目标的request')
    }
}
class proxyTarget {
    constructor(realTarget) {
        this.realTarget = realTarget
    }
    request() {
        //? 在真实对象处理请求之前执行一些操作
        console.log('proxyTarget: Logging request.');
        //? 调用真实对象的方法 先判断有没有哦
        if (!this.realTarget) {
            this.realTarget = new realTarget()
        }
        this.realTarget.request();
    }
}


let pro = new proxyTarget(new realTarget())
pro.request()
